from dto import *
import ruleSpecFactory

def create_rule(ruleModel):
    specs = []
    for s in ruleModel.specs:
        print s.type
        specs.append(create_rule_spec(s))
    
    return Rule(ruleModel.id, ruleModel.name, ruleModel.points, ruleModel.year, ruleModel.month, specs, [])

def create_rule_spec(ruleSpecModel):
    elements = [x.name for x in ruleSpecModel.elements]
    return ruleSpecFactory.create(ruleSpecModel.id, ruleSpecModel.f, ruleSpecModel.t, elements, ruleSpecModel.amount, ruleSpecModel.year, ruleSpecModel.month, ruleSpecModel.type)
    
def create_venta(ventaModel):
    items = []
    for item in ventaModel.items:
        items.append(create_venta_item(item))
        
    pays = []
    for pay in ventaModel.pagos:
        pays.append(create_venta_pago(pay))
        
    return Sell(ventaModel.idventa, ventaModel.nrofactura, ventaModel.fecha, '', ventaModel.totalfactura, items, pays, '')
    
def create_venta_sql(r):
    return Sell(r['idventa'], r['nrofactura'], r['fecha'], '', r['totalfactura'], [], [], '')

def create_venta_pago_sql(r):    
    return SellPay(r['idformapagos'], r['fecha'], r['monto'], r['cuotas'])
    
def create_valor(valorModel):
    return Valor(valorModel.nombre, valorModel.descripcion, valorModel.valor, valorModel.tipo, valorModel.tipoVenta)

def create_venta_pago(ventaPagoModel):
    return SellPay(ventaPagoModel.idformapagos, ventaPagoModel.fecha, ventaPagoModel.monto, ventaPagoModel.cuotas)
    
def create_venta_item(ventaItemModel):
    print ventaItemModel.ptc_rel
    producto = create_ptc(ventaItemModel.ptc_rel)
    return SellItem(producto, ventaItemModel.cantidad, ventaItemModel.preciofinal)
    
def create_ptc(ptcModel):
    print ptcModel.producto.proveedor_rel
    if (ptcModel.producto.proveedor_rel!=None): 
		proveedor = create_proveedor(ptcModel.producto.proveedor_rel)
		grupo = create_grupo(ptcModel.producto.grupo_rel)
		return Product(ptcModel.id, ptcModel.producto.descri, ptcModel.producto.codsussan, ptcModel.color, ptcModel.talle, proveedor, grupo, 0, ptcModel.producto.anio)
    
def create_proveedor(provModel):
	print provModel.idproveedor
	print provModel.nombre
	return Provider(provModel.idproveedor, provModel.nombre)

def create_grupo(grupoModel):
    return ProductGroup(grupoModel.idgrupo, grupoModel.nombregrupo)
    
def create_club(clubModel):
    return Club(clubModel.id, clubModel.idcliente, clubModel.idcategoria, clubModel.estado, clubModel.fechasolicitud, clubModel.fechaentrega, clubModel.sucursal)